Using a Display as a Light Source

ABSTRACT

In general, the subject matter can be embodied in methods, systems, and program products for using a display of a computing device as a light source. The computing device receives a first image that was captured by a camera of the computing device, determines a brightness of at least part of the first image, selects an intensity of a light source that is to be presented by the display of the computing device, the intensity of the light source being selected based on the determined brightness of the at least part of the image, presents the light source by the display of the computing device, the presented light source having the selected intensity, and receives a second image that is captured by the camera of the computing device while the computing device is presenting the light source on the display using the selected intensity.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/983,697, filed on Dec. 30, 2015. The prior application isincorporated herein by reference in its entirety.

TECHNICAL FIELD

This document generally relates to using a display as a light source.

BACKGROUND

Computing systems can be used to support various communicationplatforms. For example, desktop or mobile computing devices includingcameras, displays, microphones, and speakers can execute video chatapplications which facilitate conversations between multiple users inreal time. During a video chat conversation, for example, audiovisualcontent captured by multiple different computing devices can beexchanged over a communications network.

SUMMARY

This document describes techniques, methods, systems, and othermechanisms for using a display as a light source.

As additional description to the embodiments described below, thepresent disclosure describes the following embodiments.

Embodiment 1 is a computer-implemented method. The method comprisesreceiving, by a computing device, a first image that was captured by acamera of the computing device. The method comprises determining, by thecomputing device, a brightness of at least part of the first image. Themethod comprises selecting, by the computing device, an intensity of alight source that is to be presented by a display of the computingdevice, the intensity of the light source being selected by thecomputing device based on the determined brightness of the at least partof the image. The method comprises presenting, by the computing device,the light source by the display of the computing device, the presentedlight source having the selected intensity. The method comprisesreceiving, by the computing device a second image that is captured bythe camera of the computing device while the computing device ispresenting the light source on the display using the selected intensity.

Embodiment 2 is the method of embodiment 1, wherein the light sourcethat is presented by the display occupies a portion of the display anddoes not occupy all of the display.

Embodiment 3 is the method of embodiment 1 or 2, wherein presenting thelight source by the display of the computing device includes presentingthe light source at a first location on the display, wherein the methodfurther comprises receiving, by the computing device, user input thatmoves the light source from the first location on the display to asecond location on the display, and presenting, by the computing devicein response to having received the user input that moves the lightsource from the first location on the display to the second location onthe display, the light source at the second location on the display.

Embodiment 4 is the method of any one of embodiments 1 through 3,wherein selecting the intensity of the light source includes selecting asize of the light source on the display of the computing device.

Embodiment 5 is the method of any one of embodiments 1 through 4,wherein selecting the intensity of the light source includes selecting abrightness of the light source.

Embodiment 6 is the method of any one of embodiments 1 through 5,wherein the method further comprises identifying, by the computingdevice, a portion of the first image that represents a person, whereindetermining the brightness of the at least part of the first imageincludes determining the brightness of the portion of the first imagethat represents the person.

Embodiment 7 is the method of any one of embodiments 1 through 6,wherein the method further comprises determining, by the computingdevice, a color mix of a user interface that is presented by thedisplay, and selecting, by the computing device, a color of the lightsource to compensate for the color mix of the user interface, in orderto affect a color of an illumination that is generated by the display,wherein the presented light source has the color that was selected tocompensate for the color mix of the user interface.

Embodiment 8 is the method of any one of embodiments 1 through 7,wherein the method further comprises transmitting, by the computingdevice, the second image for display on a second computing device,receiving, by the computing device, a video stream of images from thesecond computing device, and displaying, by the computing device, thereceived video stream of images on the display, concurrent with thepresentation of the light source by the display.

Embodiment 9 is the method of any one of embodiments 1 through 8,wherein the method further comprises presenting, by the computingdevice, the second image on the display of the computing deviceconcurrent with the presented light source, receiving, by the computingdevice, user input to switch the computing device from capturing imagesusing the camera to capturing images using another camera of thecomputing device, and in response to having received the user input toswitch the computing device from capturing the images using the camerato capturing images using the another camera of the computing device:(i) presenting, by the computing device, images captured using theanother camera of the computing device on the display of the computingdevice, and (ii) removing, by the computing device and from the displayof the computing device, the presented light source so that the displaydoes not include the presented light source while the images capturedusing the another camera of the computing device are presented on thedisplay.

Embodiment 10 is the method of any one of embodiments 1 through 9,wherein the method further comprises determining, by the computingdevice, that the computing device was disconnected from an externalpower source, or that a battery of the computing device dropped below athreshold power level, changing, by the computing device, the intensityof the light source from a first intensity level to a second intensitylevel as a result of having determined that the computing device wasdisconnected from an external power source, or that a battery of thecomputing device dropped below a threshold power level, wherein thefirst intensity level is less than the second intensity level, changing,by the computing device, an intensity of another portion of the displayof the computing device from a third intensity level to a fourthintensity level as a result of having determined that the computingdevice was disconnected from the external power source, or that thebattery of the computing device dropped below the threshold power level,wherein the third intensity level is greater than the fourth intensitylevel, and presenting, by the computing device, the light source by thedisplay with the second intensity level, as a result of having changedthe intensity of the light source from the first intensity level to thesecond intensity level.

Embodiment 11 is directed to one or more computer-readable deviceshaving instructions stored thereon, that when executed by one or moreprocessors, cause the performance of actions according to the method ofany one of embodiments 1 through 10.

Particular implementations can, in certain instances, realize one ormore of the following advantages. A light source provided by a computingdevice display can compensate for a lack of a separate light source onthe same side of the display. As such, a user may have a front-facinglight source to accompany a front-facing camera that was unaccompaniedby, for example, a LED flash. Further, device manufacturers may designdevices without front-facing lights that are separate from the display.An ability of a user to move the light source around the display canprevent inconveniences caused by placement of the light source on thedisplay. An intensity of a light source presented by a computing devicedisplay can update in response to changes in lighting conditions of theenvironment in which the device is situated. An intensity and color of alight source presented by a device display can update in response tochanges in brightness and color mix of one or more applicationinterfaces presented by the device, for example, to make sure that auser in the image is sufficiently lit with an appropriate color balance.A consistent and appropriate brightness and color mix can be maintainedfor images and video captured by a device camera. General screenbrightness can be reduced while the intensity of the light source may beincreased, to compensate for an effect the reduction in general screenbrightness has on overall illumination while conserving power.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features,objects, and advantages will be apparent from the description anddrawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a diagram of an example environment in which a display is usedas a light source.

FIG. 2 shows a user providing touch input for moving a light source thatis provided by a display of a computing device.

FIG. 3 shows a user providing touch input for resizing a light sourcethat is provided by a display of a computing device.

FIG. 4 shows a flowchart of an example method for using a display as alight source.

FIG. 5 is a conceptual diagram of a system that may be used to implementthe systems and methods described in this document.

FIG. 6 is a block diagram of computing devices that may be used toimplement the systems and methods described in this document, as eithera client or as a server or plurality of servers.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

This document generally describes using a display as a light source. Asan example, a computing device such as a laptop, tablet, or smartphonemay include a front-facing camera with which a user is able to takepictures of himself, but the user may be in a dark environment andadditional light may be helpful to illuminate the user. The technologydescribed in this document uses a display of the computing device tofurther illuminate an environment captured by the front-facing camera.Using the display as a light source may be particularly helpful withdevices that do not include a light-producing device other than thedisplay on the side of the device with the camera. This is in contrastto how some devices include such a light-producing device (e.g., alight-producing LED) near a back-facing camera on a back of a computingdevice.

The display can be used as a light source in various ways. In examplesin which the computing device is a participating device a videoconference, the computing device may present a video that was capturedby a camera of another computing device that is participating in thevideo conference. With such examples, the light source may be agraphical interface element that occupies a portion of the display andthat is integrated with the video or to the side of the video. Forexample, the light source may include one or more shapes that are whiteor another bright color. The light source may also be a border thatsurrounds the video or that follows a perimeter of the display. A usermay be able to provide user input that moves the light source, forexample, by touching the light source on a touchscreen display anddragging the light source to a new location of the touchscreen display.A user may be able to provide user input that resizes a light source,for example, by pinching the light source on a touchscreen display todecrease or increase its size.

In some implementations, the computing device can adjust an intensity ofthe light source based on characteristics of the environment in whichthe image or video is being captured by the computing device. Forexample, the computing device may change the intensity of the lightsource to ensure that the user or environment that is being captured bythe camera is sufficiently lit. The computing device may capture animage and analyze that image to determine whether to increase ordecrease an intensity of the light source. The analysis of the image caninclude determining whether the entire image or one or more portionsthereof (e.g., a portion of the image that the computing device hasidentified as a person or other subject) has an average brightness levelthat exceeds a determined or threshold brightness level.

Should the analysis of the image indicate that the image or portionthereof is not sufficiently lit, the computing device may increase theintensity of the light source. Conversely, should the image or portionthereof be overly lit, the computing device may decrease the intensityof the light source. This process can repeat, analyzing multiplesuccessive images of a captured video and continuously or regularlyadjusting an intensity of the light source to ensure that the user orenvironment is sufficiently lit. In some examples, the computing deviceuses a light sensor of the computing device (e.g., a front-facing lightsensor) that is separate from the front-facing camera of the computingdevice to identify environmental brightness levels for use in theabove-described brightness-determination process.

Increasing the intensity of the light source can include increasing asize of the light source (e.g., increasing a diameter of a white circleon the display or a width of a white border region that surrounds thevideo or is at a perimeter of the display). Increasing the intensity ofthe light source can include increasing a user-perceived brightness ofthe light source, in order to affect the level of light emitted by thelight source, for example, by changing a shade of the light source(e.g., from gray to white or vice versa) so that the LCD portion of thedisplay permits a greater amount of light generated by a backlight toemit into the environment. Increasing the intensity of the light sourcecan also include increasing an intensity of a backlight of the display.In some examples, should the computing device increase the intensity ofthe backlight, the entire display (including both the video and thelight source) may appear at an increased intensity level. In someexamples, the computing device may darken the shade of pixels outside ofthe light source portion of the display so that the light source mayappear to increase in brightness while the rest of the display(including the video) may appear to remain at a same or substantiallysame brightness level.

In some implementations, the computing device can adjust a tint (e.g., acolor) of the light source based on characteristics of the environmentin which the video is being captured. As an example, should the displaypresent one or more red graphical objects (e.g., as part of thedisplayed video or as part of other regions of the display), the user orenvironment that is being captured by the computing device may appear tohave a red tint in images that are captured by the camera. The computingdevice can modify the tint of the light source portion of the display inorder to compensate for the red that is produced by the display. Becausegreen is the complimentary color to red (i.e., because green is oppositered on a color wheel), introducing a green tint to the light source cancancel out the red effect caused by the other portion of the display.

The computing device can select a tint for the light source by analyzingthe image that is produced by the display. For example, the computingdevice may take a screen capture of an image that is produced by thedisplay and determine a color mix (e.g., average color hue, saturation,and/or value) of the entire image or a portion thereof (e.g., a portionexcluding the light source, a video chat user interface portion of thedisplay, etc.). The computing system can determine a color that iscomplimentary to the determined color mix of the display or the portionthereof, and that determined color can be presented as the primary oraverage tint of the light source (or can at least be used in adetermination of a tint of the light source). In some implementations,the computing device can select a tint for the light source by analyzingan image captured by the camera of the computing device, for example, toidentify whether the environment has a red tint. In some examples, thecomputing device may not have knowledge of an unaltered color of theenvironment and analysis of images of the captured environment areanalyzed over time to determine how the color changes (e.g., fromneutral to red as the display changes), or such analysis of images ofthe captured environment are used in conjunction with analysis of thepresentation by the display.

In some implementations, the computing device moves the light source inresponse to other computing device events. For example, should the useror computing device resize the video so that the video may expand into aregion of the display at which the light source was present, thecomputing device may automatically move the light source so that thelight source does not obscure the video or a portion of the video. Onthe other hand, should the computing device display the light sourcenear the video and should the computing device increase a size of thelight source to increase its intensity, the light source mayautomatically (without user input) move so that the enlarged lightsource does not obscure the displayed video or portion thereof. In someexamples, the computing device turns the light source off (e.g., removesthe light source from the display) in response to user input thatswitches from use of the front-facing camera to use of the rear-facingcamera, and turns the light source on in response to user input thatswitches from use of the rear-facing camera to use of the front-facingcamera.

In some implementations, an intensity of the light source is affected bya reliance of the computing device on battery power. For example, shouldthe computing device be not plugged into external power and should thebattery be below a threshold battery level, the computing device maylimit an intensity of the light source to at or below a certainintensity level, in order to limit battery drain.

These and other features of technology for using a display as a lightsource are described below, with reference to the figures.

FIG. 1 is a diagram of an example environment 100 in which a display isused as a light source. FIG. 1 also illustrates an example flow of data,shown in stages (A) to (E). Stages (A) to (E) may occur in theillustrated sequence, or they may occur in a sequence that is differentthan in the illustrated sequence. In some examples, two or more stagesmay occur concurrently.

As shown in FIG. 1, the example environment 100 includes a computingdevice 102 operated by a user 104, and a computing device 112 operatedby a user 114. The computing devices 102 and 112, for example, can beany appropriate computing device, such as a desktop computer, a laptopcomputer, a tablet computer, a smartphone, or another sort of computingdevice. The computing device 102, for example, includes a display 106and a camera 108. Each of the display 106 and the camera 108 can beintegrated with the computing device 102, for example, or can beexternal to the computing device and in data communication with thecomputing device by a wired or wireless connection. Similarly, thecomputing device 112 includes a display 116 and a camera 118.Peripherals that are in wireless communication with a main portion of acomputing device but are not in physical contact with that main portionof the computing device may be considered part of the computing device.

Referring to the example flow of data, during stage (A), the camera 108of the computing device 102 captures an image of the user 104. Forexample, the captured image may be a single static image, or may be aframe of a captured video. The capture of image(s) by the camera 108 canbe in response to an input command (e.g., an interface selection, avoice command, or another appropriate input) provided by the user 104 tothe computing device 102. For example, the user 104 may provide acommand to the computing device 102 to take a self-portrait photographor video. As another example, the user 104 may provide a command to thecomputing device 102 to initiate or join a real-time video chat sessionwith one or more additional users.

During stage (B), the computing device 102 receives the image(s)captured by the camera 108, determines a brightness of at least aportion of the image (e.g., a value corresponding to a measuredintensity of image pixels, such as a brightness value, a grayscalevalue, one or more color values, or other suitable values), and selectsan intensity of a light source (e.g., a luminous intensity as perceivedby human eyes) that is to be presented by the display 106. Determiningthe image brightness, for example, may include determining an averagebrightness of the received image or an average brightness of part of thereceived image (e.g., a portion that represents the user 104 or the faceof the user 104). If the determined image brightness meets apredetermined threshold, for example, the computing device 102 candetermine that a light source is to be presented and can select anintensity of the light source. In general, the selected intensity of thelight source may be inversely proportional to the determined imagebrightness. That is, if the image brightness is determined as being low,the selected intensity of the light source may be high, whereas if theimage brightness is determined as being high (yet meets thepredetermined threshold), the selected intensity of the light source maybe low. In the present example, the computing device 102 determines thatthe image of the user 104 captured by the camera 108 has an averagebrightness that meets the threshold (e.g., is within a predeterminedrange of brightness values, grayscale values, or color values), andselects an appropriate intensity of the light source based on thedetermined brightness.

During stage (C), the computing device display 106 of the computingdevice 102 presents a light source 110, the light source 110 having theselected intensity. In some examples, the light source 110 can be ashape (e.g., circle, square, lightbulb, border, or another appropriateshape) having a single color (e.g., white, gray, or a particular RGB(red, green, blue) value) that is rendered by the display 106 along withan application interface (e.g., a video chat window) presented by thedisplay. For example, the shape can be rendered within the applicationinterface (e.g., within the video chat window), outside the applicationinterface (e.g., to the side of the video chat window or in a secondarywindow), as a border of the application interface, or at the perimeterof the display 106.

In some examples, the light source 110 can include multiple lightsources. For example, each of the multiple light sources can have adifferent primary color, such as a first light source having a red colorcomponent, a second light source having a green color component, and athird light source having a blue color component. In some examples,distributed light sources (e.g., each of the same size, between one and40 pixels each) can be distributed throughout a display area (e.g., anapplication interface or an entire screen) and rendered by the display106. For example, a percentage (e.g., 5%, 10%, 20%, or another suitablepercentage) of screen pixels can be designated as light sources,distributed evenly throughout the display 106, while the remainingscreen pixels render application output. In general, selecting theintensity of light source(s) may include selecting a size of the lightsource(s) (e.g., by selecting a total screen area of one or more lightsources, or a number of screen pixels designated as light sources),selecting a brightness of the light source(s) (e.g., by selecting anoutput of a backlight or a tint of pixels that may obscure backlightoutput), or selecting a combination of the two attributes.

During stage (D), the computing device 102 receives subsequent image(s)captured by the camera 108 while presenting the light source 110 on thedisplay 106 having the selected intensity. For example, the light source110 presented on the display 106, combined with light from one or moreapplication interfaces presented on the display 106, can radiate into anenvironment of the display 106 (e.g., onto the user 104 and any physicalobjects that surround the user), and can affect the brightness ofsubsequent images captured by the camera 108. The subsequent images canbe continually (e.g., every frame of a video) or periodically (e.g., tentimes per second, once per second, or another suitable interval)analyzed to determine image brightness (and optionally, color mix) as itmay change over time. For example, the brightness and color mix of adisplayed application interface may change, and/or lighting conditionsof the environment of the display 106 may change. An intensity (andoptionally, color) of the light source presented by the display 106 canbe updated in response to such changes, such that a consistentbrightness (and color mix) can be maintained for images and videocaptured by the camera 108.

During stage (E), the computing device 102 transmits one or more imagesfor display by one or more other computing devices, while receiving andrendering video streams from the other computing devices, and whilepresenting the light source 110 on the display 106. For example, theuser 104 and the user 114 can engage in a video chat session usingrespective computing devices 102 and 112. During the video chat session,for example, a video stream captured by the camera 108 can betransmitted (e.g., over a wired and/or wireless network) from thecomputing device 102 to the computing device 112, while a video streamcaptured by the camera 118 may be transmitted from the computing device112 to the computing device 102. Video of the user 114 can be renderedby the display 106 while video of the user 104 is rendered by thedisplay 116, for example, facilitating a real-time conversation betweenthe users 114 and 104. Each display may also show the video captured bythe camera of each respective device, for example, a “selfie” video sothat the users can view the video stream that is being sent to the otherparty.

When operating in a low-light environment, for example, the display 106may serve as a primary source of light for images or video captured bythe camera 108—that is, the light source 110 can be rendered by thedisplay 106 in addition to one or more application interfaces (e.g., avideo chat window), and an intensity of the light source 110 can beselected to supplement light in the environment and light provided bythe application interface(s). In some examples, and as discussed infurther detail below, a color of the light source 110 can be selected tocompensate for a color mix of the application interface(s), such thatthe light source 110 corrects for potential color shift under variouslighting conditions.

In the present example, computing devices 102 and 112 are shown,however, other examples may include additional computing devices or asingle computing device. For example, a single computing device may beused to capture and record video and/or static images and still providea light source 110 that is user-manipulable and that is automaticallyadjusting, as described throughout this disclosure. As another example,many computing devices may be used to conduct a video chat session whichincludes many users.

In various examples, the use of a display as a light source may beimplemented as a standalone application, an application feature thatintegrates into other appropriate applications, or at an operatingsystem level. For example, a standalone application may be used inconjunction with (e.g., can hover over) other applications, and thestandalone application may be launched by a user when desired or may belaunched automatically under particular conditions (e.g., low-lightconditions). When implemented as an application feature, for example,the feature can be included with applications that can appropriatelymake use of a display as a light source (e.g., video chat applications).When implemented at an operating system level, for example, an API(application program interface) can be provided such that applicationdevelopers can integrate the feature.

FIG. 2 shows a user providing touch input for moving a light source 210provided by a display 206 of a computing device 202. The computingdevice 202 (e.g., similar to the computing devices 102, 112, shown inFIG. 1), for example, can include the display 206 and a camera 208,which can be used to capture images or video of a user. In someexamples, the computing device 202 can be used to capture digitalphotographs, digital video, or to facilitate real-time video chatsessions with one or more additional users. During a video chat session,for example, the camera 208 of the computing device 202 can capturevideo of a user while the device receives and displays a video stream ofimages of another user from another computing device. In the presentexample, an application interface 212 (e.g., an interface of the videochat session) presented by the display 206 includes the light source210, a video image 214 from another computing device, a video image 216of a user of the computing device 202, and user interface controls 218for configuring the application and/or the light source 210.

In some examples, the application interface 212 can receive user inputthat indicates that the light source 210 is to be moved, and inresponse, the computing device 202 can move the light source. Forexample, the computing device 202 can initially present the light source210 at a default location 220 (e.g., a location specified by a user or alocation determined by an application). The user can provide touch inputfor moving the light source 210, for example, by selecting the lightsource (e.g., by contacting the light source 210 on the display 206 witha touch of a finger) and by moving the selected light source (e.g., byproviding a dragging gesture across the display 206) to an updatedlocation 222. As another example, an input device (e.g., a computermouse) can be used to select the light source 210 and to update thelocation of the light source. In response to the user input, forexample, the computing device 202 can move the light source 210 tocorrespond to a position of the user input as it moves across thedisplay 206. The light source can also move in response to userselection of user interface elements (e.g., arrow buttons, or buttonsthat toggle the location of the light source from one corner toanother).

In some examples, the light source 210 may automatically move. Forexample, an application executed by the computing device 202 or anoperating system of the computing device can determine that the lightsource 210 obscures a particular portion of an application interfacerendered by the display 206 or would obscure a particular portion of anapplication interface in response to an event (e.g., a resizing of theapplication interface), and in response, can move the light source to anupdated location 222 away from the particular portion. If theapplication interface 212 includes a rendered video stream, for example,the computing device 202 can perform facial detection to identify alocation of a face in the video stream, and the device can automaticallymove the light source 210 away from the location of the face such thatthe face is not obscured by the rendered light source.

As another example, an application executed by the computing device 202or an operating system of the computing device can determine that thevideo or application interface 212 (or a window of the interface) hasbeen or is about to be moved and/or resized, and in response, canautomatically move the light source 210 to maintain the relativeposition of the light source within the interface, outside of theinterface, or at the periphery of the interface.

In some examples, a user may configure the light source 210 using theuser interface controls 218. For example, the user interface controls218 can include a control by which user input is able to specify adefault location of the light source 210, a control by which the lightsource 210 is manually moved, a control by which user input is able toselect an option to enable or disable automatic movement of the lightsource 210, or controls by which other appropriate configurationsettings may be provided.

FIG. 3 shows a user providing touch input for resizing a light source310 that is provided by a display 306 of a computing device 302. Thecomputing device 302 (e.g., similar to the computing devices 102, 112,shown in FIG. 1), for example, can include the display 306 and a camera308, which can be used to capture images or video of a user. In someexamples, the computing device 302 can be used to capture digitalphotographs, digital video, or to facilitate real-time video chatsessions with one or more additional users. During a video chat session,for example, the camera 308 of the computing device 302 can capturevideo of a user while the device receives and displays a video stream ofimages of another user from another computing device. In the presentexample, an application interface 312 (e.g., an interface of the videochat session) presented by the display 306 includes the light source310, a video image 314 from another computing device, a video image 316of a user of the computing device 302, and user interface controls 318for configuring the application and/or the light source 310.

In some examples, the application interface 312 can receive user inputthat indicates that the light source 310 is to be resized, and inresponse, the computing device 302 can resize the light source. Forexample, the computing device 302 can initially present the light source310 with a default size 320 (e.g., a size specified by a user or a sizedetermined by an application or another process). The user can providetouch input for resizing the light source 310, for example, by selectingthe light source (e.g., by contacting the light source 310 on thedisplay 306 with a touch of one or more fingers) and by resizing theselected light source to an updated size (e.g. by providing a pinchinggesture on the display 306). For example, pinching fingers together candecrease the size of the light source, while spreading the fingers apartcan increase the size of the light source. User input can also selectone or more other user interface elements to change the size of thelight source (e.g., “+” and “−” user interface elements). As anotherexample, an input device (e.g., a computer mouse) can be used to selectthe light source 310 and to update the location of the light source. Inresponse to the user input, for example, the computing device 302 canincrease or reduce the size of the light source 310 to correspond to aposition of the user input as it contacts the display 306. In someexamples, instead of changing the size of the light source, theabove-described actions can increase or decrease a brightness of thelight source (e.g., selecting a “+” button can increase the brightnessof the light source).

In some examples, the light source 310 can automatically change in size.For example, an application executed by the computing device 302 or anoperating system of the computing device can determine that one or moreimages received by the camera 308 has a brightness value that fallsoutside of a target range of brightness values, and in response, canappropriately present, remove, or resize the light source 310 renderedby the display 306. When determining the brightness values of images (orimage portions), for example, the computing device 302 can determine anaverage brightness of a single image (e.g., a frame of a video), or anaverage brightness of a sequence of images (e.g., a series or samplingof video frames). For example, every video frame or every n^(th) videoframe of a video stream over a predetermined time period (e.g., the pastsecond, the past two seconds, or another suitable time period) can beanalyzed to determine average brightness values for each frame, and theaverage brightness values can be aggregated to determine an averagebrightness value of the video stream over the time period. If theaverage brightness value of the video stream over the time period isunder a lower threshold value of the target range of brightness values,for example, an intensity of light source 310 can be increased, forexample, by increasing the brightness or size of the light source 310(and/or the light source 310 can be presented). If the averagebrightness value of the video stream over the time period is over anupper threshold value of the target range of brightness values, forexample, an intensity of the light source 310 can be decreased, forexample, by decreasing the brightness or size of the light source 310(and/or the light source 310 can be removed).

In some examples, the user interface controls 318 can be used toconfigure the light source 310. For example, the user interface controls318 can include a control by which a default size of the light source310 is selected, a control by which the light source 310 is manuallymoved, a control by which an option to automatically resize (and/orpresent) the light source 310 is enabled or disabled, one or morecontrols by which image brightness value thresholds are specified, orcontrols by which other appropriate configuration settings may beprovided.

FIG. 4 shows a flowchart of an example method 400 for using a display asa light source. The method 400 is further described throughout thisdisclosure, for example, with reference to FIGS. 1-3.

At box 402, a computing device receives a first image that was capturedby a camera of the computing device (e.g., a camera that is integratedwith or that is separate from but that is in communication with thecomputing device). Referring to FIG. 1, for example, the computingdevice 102 can receive an image of the user 104 captured by the camera108. For example, the captured image may be a single static image, ormay be a frame of a captured video of the user 104.

At box 404, a portion of the first image that represents a person can beidentified. For example, the computing device 102 can use objectdetection techniques to identify a portion of the first image thatincludes the face or head or body of the user 104. The portion of thefirst image can include pixels of the image that are included in an areaof the image that corresponds to the detected face of the user 104, forexample.

At box 406, the computing device determines a brightness of at leastpart of the first image. The computing device 102, for example, candetermine a brightness of one or more images or video received by thecamera 108. In some examples, determining the brightness may includedetermining an average brightness of the first image or part of thefirst image (e.g., the portion that represents the person or the face ofthe person). For example, all the image pixels (or the pixels includedin the portion that represents the person) can be averaged, and anaverage value (e.g., average brightness, average color value) can beidentified as the image brightness. As another example, the first imageor a portion of the first image can be sampled to identify a subset ofpixels of the first image, and the subset of pixels can be averaged. Asanother example, the first image (or a portion of the first image) canbe converted to a different color space (e.g., grayscale, HSB (hue,saturation, brightness) space), the image pixels or a portion of theimage pixels can be averaged, and an appropriate measure of brightness(e.g., gray value, brightness value) can be identified as the imagebrightness.

At box 408, the computing device determines a color mix of a userinterface that is presented by a display of the computing device. Forexample, the computing device 102 can determine a color mix of theentire display or of an application interface (e.g., a video chat userinterface) presented by the display 106 of the computing device. Ingeneral, the color mix may depend on various colors of various onscreenelements of the application interface, such as application windows,video chat windows, and other onscreen elements. To determine the colormix of the application interface presented by the display 106, forexample, an image of the display or application interface can becontinually or periodically identified (e.g., by screen capture, byaccessing a frame buffer of video memory, or another appropriatetechnique), and the computing device can analyze the image of thedisplay or application interface to determine an average or dominantcolor mix of the interface. Techniques for determining a dominant colormix, for example, can include generating a hue histogram for theapplication interface, dynamic bucketing, or other appropriatetechniques.

At box 410, the computing device selects a light source that is to bepresented by a display of the computing device. In general, an intensityof the light source can be selected by the computing device based on thedetermined brightness of at least part of the image, and the selectedintensity may be inversely proportional to the determined imagebrightness. That is, if the image brightness is determined as being low,the selected intensity of the light source may be high, whereas if theimage brightness is determined as being high, the selected intensity ofthe light source may be low. For example, the computing device 102 canselect a light source for the display 106 to present, based on anaverage brightness of the first image or part of the first image (e.g.,the portion that represents user 104, such as the portion thatrepresents the user's face), such that the light source is configured toilluminate the user and an attempt is not made to illuminate backgroundfeatures. Example techniques for selecting the intensity of the lightsource are illustrated in boxes 412, 414, and 416, however, othertechniques are described throughout this disclosure. The techniques forselecting the intensity of the light source may include any combinationof one or more of the techniques that are described with respect to theflowchart of FIG. 4 or throughout this disclosure.

At box 412, selecting the intensity of the light source can includeselecting a size of the light source on the display of the computingdevice. Referring to FIG. 3, for example, the light source 310 can beautomatically presented, removed, or resized, based on the determinedimage brightness, without the user providing input. Selecting the sizeof the light source 310, for example, can include determining a totalscreen area or number of pixels to be included in the light source. Ingeneral, a higher selected intensity corresponds to a larger screen areaor greater number of pixels to be included in the light source, whereasa lower selected intensity corresponds to a smaller screen area or fewerpixels. A user can also manually change the size of the light source, asdescribed with respect to FIG. 3 and elsewhere in this disclosure.

At box 414, selecting the intensity of the light source can includeselecting a brightness of the light source. For example, a brightness ofthe light source 310 can be a brightness or grayscale value assigned topixels of the light source. In general, a higher selected intensitycorresponds to a high brightness value (e.g., a high white value),whereas a lower selected intensity corresponds to a low brightness value(e.g., a low white value). The computing device can increase or decreasethe brightness of the light source with the light source remaining fixedin size.

At box 416, the computing device can select a color of the light source.The color of the light source can be selected to compensate for thecolor mix of the user interface, in order to affect a color of anillumination that is generated by the display. For example, the color ofthe light source 310 can be selected by the computing device 302 tocompensate for the color mix of the application interface 312, includingthe video image 314 from another computing device, the video image 316captured by the camera 308, and the user interface controls 318. As anexample, should the application interface 312 have a color mix which isdominated by a particular color, a user or environment that is beingilluminated by the display 306 and is being captured by the camera 308of the computing device 302 may appear to have a tint of that dominantcolor. The computing device 302, for example, can modify the tint of thelight source 310 presented by the display 306 in order to compensate forthe dominant color, by introducing a color that is complimentary to thedominant color (e.g., based on a color wheel), thus canceling or atleast minimizing a color effect caused by the dominant color.

At box 418, the display of the computing device presents the lightsource at a first location on the display. The presented light sourcecan have the selected intensity, and can have the color that wasselected to compensate for the color mix of the user interface.Referring to FIG. 2, for example, computing device 202 can present thelight source 210 on the display 206 at the first location 220. In someexamples, the light source that is presented by the display can occupy aportion of the display without occupying all of the display. Forexample, the light source 210 can be a shape (e.g., circle, square,lightbulb, border, or another appropriate shape) rendered within oroutside of the application interface 212, as a border of the applicationinterface, or at the perimeter of the display 206. In some examples, thelight source can occupy the entire display for a period of time duringwhich one or more images are captured by a device camera, and after theperiod of time, the light source is removed. For example, the computingdevice 202 can be used to take a self-portrait photograph, and the lightsource 210 can occupy the display 206 while the camera 208 takes thephotograph. After the photograph is taken, for example, the light sourcecan be removed from the display and the photograph can be presented.

At box 420, the computing device can receive a command to move the lightsource, and can present the light source at a different location on thedisplay. In some examples, user input can be received by the computingdevice that moves the light source from the first location on thedisplay to a second location on the display. In response to havingreceived user input (e.g., touch input, input provided using an inputdevice, or other appropriate types of input), for example, the computingdevice 202 can move the light source 210 away from the location 220, andcan present the light source at the second location on the display(e.g., the updated location 222). The moved light source 210 may havethe same shape as before, but may be located at a different position. Insome examples, the computing device can automatically move the lightsource. For example, if the computing device 202 determines that thelight source 210 obscures or would obscure a particular portion of theapplication interface 212, or if the interface is moved and/or resized,the computing device 202 can automatically move the light source 210 toa suitable updated location.

At box 422, the computing device receives a second image that iscaptured by the camera of the computing device while the computingdevice is presenting the light source on the display using the selectedintensity. Referring again to FIG. 1, for example, after presenting thelight source 110 on the display 106, the computing device 102 canreceive additional images or video captured by the camera 106. Theadditional images or video are illuminated at least in part by the lightsource 110, for example, which may be adjusted in intensity and color bythe computing device 102, in response to changes in image brightness anda color mix of an application interface presented by the display 106.

In some examples, the method may include transmitting the second imagefor display on a second computing device, receiving a video stream ofimages from the second computing device, and displaying the receivedvideo stream of images on the display, concurrent with the presentationof the light source by the display. For example, the computing device102 can transmit the second image (or a video stream including thesecond image) to the computing device 112, and can receive a videostream of images from the computing device 112. The video stream ofimages received from the computing device 112 can be rendered by thedisplay 106, for example, concurrent with the presentation of the lightsource 110 by the display.

In some examples, the method may include presenting the second image onthe display of the computing device concurrent with the presented lightsource, and receiving user input to switch the computing device fromcapturing images using the camera to capturing images using anothercamera of the computing device. For example, the computing device 112(e.g., a smartphone) can include the camera 118 (e.g., a front-facingcamera, having a lens that faces the user 114) and another camera (e.g.,a rear-facing camera (not shown), having a lens that faces away from theuser 114). When the camera 118 is in use during a video chat session,for example, a first portion of the display 116 may include a videostream of images of the user 114 captured by the camera 118, a secondportion of the display 116 may include a video stream of images receivedfrom the computing device 102, and a third portion of the display 116may include a presented light source. In response to having received theuser input, for example, the computing device can present imagescaptured using the other camera of the computing device on the displayof the computing device, and can remove the presented light source sothat the display does not include the presented light source while theimages captured using the other camera of the computing device arepresented on the display. For example, in response to receiving input(e.g., a control selection, a voice command, or another appropriate typeof input) from the user 114 to switch to another camera (e.g., from afront-facing camera to a rear-facing camera), the computing device 112can update the first portion of the display 116 to include a videostream of images captured by the other camera, and the computing device112 can remove the presented light source from the display 116.

In some examples, the method may include determining that the computingdevice was disconnected from an external power source, or that a batteryof the computing device dropped below a threshold power level. Forexample, the computing device 112 can be unplugged from an electricalcharging device, or a battery of the computing device can drop below 5%,10%, 20%, or another appropriate threshold level. As a result of havingdetermined that the computing device 112 was disconnected from anexternal power source, or that a battery of the computing device droppedbelow a threshold power level, for example, the intensity of the lightsource can be changed from a first intensity level (e.g., a low level)to a second intensity level (e.g., a high level). To conserve devicepower, for example, general screen brightness can be reduced by thecomputing device 112 while the intensity of the light source presentedby the display 116 is increased, to compensate for an effect thereduction in general screen brightness has on overall illumination. As aresult of having changed the intensity of the light source from thefirst intensity level to the second intensity level, for example, thedisplay 116 of the computing device 112 can present the light sourcewith the second intensity level.

Further to the descriptions above, a user may be provided with controlsallowing the user to make an election as to both if and when systems,programs or features described herein may enable collection of userinformation (e.g., information about a user's social network, socialactions or activities, profession, a user's preferences, or a user'scurrent location), and if the user is sent content or communicationsfrom a server. In addition, certain data may be treated in one or moreways before it is stored or used, so that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser, or a user's geographic location may be generalized where locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular location of a user cannot be determined. Thus, theuser may have control over what information is collected about the user,how that information is used, and what information is provided to theuser.

Referring now to FIG. 5, a conceptual diagram of a system that may beused to implement the systems and methods described in this document isillustrated. In the system, mobile computing device 510 can wirelesslycommunicate with base station 540, which can provide the mobilecomputing device wireless access to numerous hosted services 560 througha network 550.

In this illustration, the mobile computing device 510 is depicted as ahandheld mobile telephone (e.g., a smartphone, or an applicationtelephone) that includes a touchscreen display device 512 for presentingcontent to a user of the mobile computing device 510 and receivingtouch-based user inputs. Other visual, tactile, and auditory outputcomponents may also be provided (e.g., LED lights, a vibrating mechanismfor tactile output, or a speaker for providing tonal, voice-generated,or recorded output), as may various different input components (e.g.,keyboard 514, physical buttons, trackballs, accelerometers, gyroscopes,and magnetometers).

Example visual output mechanism in the form of display device 512 maytake the form of a display with resistive or capacitive touchcapabilities. The display device may be for displaying video, graphics,images, and text, and for coordinating user touch input locations withthe location of displayed information so that the device 510 canassociate user contact at a location of a displayed item with the item.The mobile computing device 510 may also take alternative forms,including as a laptop computer, a tablet or slate computer, a personaldigital assistant, an embedded system (e.g., a car navigation system), adesktop personal computer, or a computerized workstation.

An example mechanism for receiving user-input includes keyboard 514,which may be a full qwerty keyboard or a traditional keypad thatincludes keys for the digits ‘0-9’, ‘*’, and ‘#.’ The keyboard 514receives input when a user physically contacts or depresses a keyboardkey. User manipulation of a trackball 516 or interaction with a trackpad enables the user to supply directional and rate of movementinformation to the mobile computing device 510 (e.g., to manipulate aposition of a cursor on the display device 512).

The mobile computing device 510 may be able to determine a position ofphysical contact with the touchscreen display device 512 (e.g., aposition of contact by a finger or a stylus). Using the touchscreen 512,various “virtual” input mechanisms may be produced, where a userinteracts with a graphical user interface element depicted on thetouchscreen 512 by contacting the graphical user interface element. Anexample of a “virtual” input mechanism is a “software keyboard,” where akeyboard is displayed on the touchscreen and a user selects keys bypressing a region of the touchscreen 512 that corresponds to each key.

The mobile computing device 510 may include mechanical or touchsensitive buttons 518 a-d. Additionally, the mobile computing device mayinclude buttons for adjusting volume output by the one or more speakers520, and a button for turning the mobile computing device on or off. Amicrophone 522 allows the mobile computing device 510 to convert audiblesounds into an electrical signal that may be digitally encoded andstored in computer-readable memory, or transmitted to another computingdevice. The mobile computing device 510 may also include a digitalcompass, an accelerometer, proximity sensors, and ambient light sensors.

An operating system may provide an interface between the mobilecomputing device's hardware (e.g., the input/output mechanisms and aprocessor executing instructions retrieved from computer-readablemedium) and software. Example operating systems include ANDROID, CHROME,10S, MAC OS X, WINDOWS 7, WINDOWS PHONE 7, SYMBIAN, BLACKBERRY, WEBOS, avariety of UNIX operating systems; or a proprietary operating system forcomputerized devices. The operating system may provide a platform forthe execution of application programs that facilitate interactionbetween the computing device and a user.

The mobile computing device 510 may present a graphical user interfacewith the touchscreen 512. A graphical user interface is a collection ofone or more graphical interface elements and may be static (e.g., thedisplay appears to remain the same over a period of time), or may bedynamic (e.g., the graphical user interface includes graphical interfaceelements that animate without user input).

A graphical interface element may be text, lines, shapes, images, orcombinations thereof. For example, a graphical interface element may bean icon that is displayed on the desktop and the icon's associated text.In some examples, a graphical interface element is selectable withuser-input. For example, a user may select a graphical interface elementby pressing a region of the touchscreen that corresponds to a display ofthe graphical interface element. In some examples, the user maymanipulate a trackball to highlight a single graphical interface elementas having focus. User-selection of a graphical interface element mayinvoke a pre-defined action by the mobile computing device. In someexamples, selectable graphical interface elements further oralternatively correspond to a button on the keyboard 504. User-selectionof the button may invoke the pre-defined action.

In some examples, the operating system provides a “desktop” graphicaluser interface that is displayed after turning on the mobile computingdevice 510, after activating the mobile computing device 510 from asleep state, after “unlocking” the mobile computing device 510, or afterreceiving user-selection of the “home” button 518 c. The desktopgraphical user interface may display several graphical interfaceelements that, when selected, invoke corresponding application programs.An invoked application program may present a graphical interface thatreplaces the desktop graphical user interface until the applicationprogram terminates or is hidden from view.

User-input may influence an executing sequence of mobile computingdevice 510 operations. For example, a single-action user input (e.g., asingle tap of the touchscreen, swipe across the touchscreen, contactwith a button, or combination of these occurring at a same time) mayinvoke an operation that changes a display of the user interface.Without the user-input, the user interface may not have changed at aparticular time. For example, a multi-touch user input with thetouchscreen 512 may invoke a mapping application to “zoom-in” on alocation, even though the mapping application may have by defaultzoomed-in after several seconds.

The desktop graphical interface can also display “widgets.” A widget isone or more graphical interface elements that are associated with anapplication program that is executing, and that display on the desktopcontent controlled by the executing application program. A widget'sapplication program may launch as the mobile device turns on. Further, awidget may not take focus of the full display. Instead, a widget mayonly “own” a small portion of the desktop, displaying content andreceiving touchscreen user-input within the portion of the desktop.

The mobile computing device 510 may include one or morelocation-identification mechanisms. A location-identification mechanismmay include a collection of hardware and software that provides theoperating system and application programs an estimate of the mobiledevice's geographical position. A location-identification mechanism mayemploy satellite-based positioning techniques, base station transmittingantenna identification, multiple base station triangulation, internetaccess point IP location determinations, inferential identification of auser's position based on search engine queries, and user-suppliedidentification of location (e.g., by receiving user a “check in” to alocation).

The mobile computing device 510 may include other applications,computing sub-systems, and hardware. A call handling unit may receive anindication of an incoming telephone call and provide a user thecapability to answer the incoming telephone call. A media player mayallow a user to listen to music or play movies that are stored in localmemory of the mobile computing device 510. The mobile device 510 mayinclude a digital camera sensor, and corresponding image and videocapture and editing software. An internet browser may enable the user toview content from a web page by typing in an addresses corresponding tothe web page or selecting a link to the web page.

The mobile computing device 510 may include an antenna to wirelesslycommunicate information with the base station 540. The base station 540may be one of many base stations in a collection of base stations (e.g.,a mobile telephone cellular network) that enables the mobile computingdevice 510 to maintain communication with a network 550 as the mobilecomputing device is geographically moved. The computing device 510 mayalternatively or additionally communicate with the network 550 through aWi-Fi router or a wired connection (e.g., ETHERNET, USB, or FIREWIRE).The computing device 510 may also wirelessly communicate with othercomputing devices using BLUETOOTH protocols, or may employ an ad-hocwireless network.

A service provider that operates the network of base stations mayconnect the mobile computing device 510 to the network 550 to enablecommunication between the mobile computing device 510 and othercomputing systems that provide services 560. Although the services 560may be provided over different networks (e.g., the service provider'sinternal network, the Public Switched Telephone Network, and theInternet), network 550 is illustrated as a single network. The serviceprovider may operate a server system 552 that routes information packetsand voice data between the mobile computing device 510 and computingsystems associated with the services 560.

The network 550 may connect the mobile computing device 510 to thePublic Switched Telephone Network (PSTN) 562 in order to establish voiceor fax communication between the mobile computing device 510 and anothercomputing device. For example, the service provider server system 552may receive an indication from the PSTN 562 of an incoming call for themobile computing device 510. Conversely, the mobile computing device 510may send a communication to the service provider server system 552initiating a telephone call using a telephone number that is associatedwith a device accessible through the PSTN 562.

The network 550 may connect the mobile computing device 510 with a Voiceover Internet Protocol (VoIP) service 564 that routes voicecommunications over an IP network, as opposed to the PSTN. For example,a user of the mobile computing device 510 may invoke a VoIP applicationand initiate a call using the program. The service provider serversystem 552 may forward voice data from the call to a VoIP service, whichmay route the call over the internet to a corresponding computingdevice, potentially using the PSTN for a final leg of the connection.

An application store 566 may provide a user of the mobile computingdevice 510 the ability to browse a list of remotely stored applicationprograms that the user may download over the network 550 and install onthe mobile computing device 510. The application store 566 may serve asa repository of applications developed by third-party applicationdevelopers. An application program that is installed on the mobilecomputing device 510 may be able to communicate over the network 550with server systems that are designated for the application program. Forexample, a VoIP application program may be downloaded from theApplication Store 566, enabling the user to communicate with the VoIPservice 564.

The mobile computing device 510 may access content on the internet 568through network 550. For example, a user of the mobile computing device510 may invoke a web browser application that requests data from remotecomputing devices that are accessible at designated universal resourcelocations. In various examples, some of the services 560 are accessibleover the internet.

The mobile computing device may communicate with a personal computer570. For example, the personal computer 570 may be the home computer fora user of the mobile computing device 510. Thus, the user may be able tostream media from his personal computer 570. The user may also view thefile structure of his personal computer 570, and transmit selecteddocuments between the computerized devices.

A voice recognition service 572 may receive voice communication datarecorded with the mobile computing device's microphone 522, andtranslate the voice communication into corresponding textual data. Insome examples, the translated text is provided to a search engine as aweb query, and responsive search engine search results are transmittedto the mobile computing device 510.

The mobile computing device 510 may communicate with a social network574. The social network may include numerous members, some of which haveagreed to be related as acquaintances. Application programs on themobile computing device 510 may access the social network 574 toretrieve information based on the acquaintances of the user of themobile computing device. For example, an “address book” applicationprogram may retrieve telephone numbers for the user's acquaintances. Invarious examples, content may be delivered to the mobile computingdevice 510 based on social network distances from the user to othermembers in a social network graph of members and connectingrelationships. For example, advertisement and news article content maybe selected for the user based on a level of interaction with suchcontent by members that are “close” to the user (e.g., members that are“friends” or “friends of friends”).

The mobile computing device 510 may access a personal set of contacts576 through network 550. Each contact may identify an individual andinclude information about that individual (e.g., a phone number, anemail address, and a birthday). Because the set of contacts is hostedremotely to the mobile computing device 510, the user may access andmaintain the contacts 576 across several devices as a common set ofcontacts.

The mobile computing device 510 may access cloud-based applicationprograms 578. Cloud-computing provides application programs (e.g., aword processor or an email program) that are hosted remotely from themobile computing device 510, and may be accessed by the device 510 usinga web browser or a dedicated program. Example cloud-based applicationprograms include GOOGLE DOCS word processor and spreadsheet service,GOOGLE GMAIL webmail service, and PICASA picture manager.

Mapping service 580 can provide the mobile computing device 510 withstreet maps, route planning information, and satellite images. Anexample mapping service is GOOGLE MAPS. The mapping service 580 may alsoreceive queries and return location-specific results. For example, themobile computing device 510 may send an estimated location of the mobilecomputing device and a user-entered query for “pizza places” to themapping service 580. The mapping service 580 may return a street mapwith “markers” superimposed on the map that identify geographicallocations of nearby “pizza places.”

Turn-by-turn service 582 may provide the mobile computing device 510with turn-by-turn directions to a user-supplied destination. Forexample, the turn-by-turn service 582 may stream to device 510 astreet-level view of an estimated location of the device, along withdata for providing audio commands and superimposing arrows that direct auser of the device 510 to the destination.

Various forms of streaming media 584 may be requested by the mobilecomputing device 510. For example, computing device 510 may request astream for a pre-recorded video file, a live television program, or alive radio program. Example services that provide streaming mediainclude YOUTUBE and PANDORA.

A micro-blogging service 586 may receive from the mobile computingdevice 510 a user-input post that does not identify recipients of thepost. The micro-blogging service 586 may disseminate the post to othermembers of the micro-blogging service 586 that agreed to subscribe tothe user.

A search engine 588 may receive user-entered textual or verbal queriesfrom the mobile computing device 510, determine a set ofinternet-accessible documents that are responsive to the query, andprovide to the device 510 information to display a list of searchresults for the responsive documents. In examples where a verbal queryis received, the voice recognition service 572 may translate thereceived audio into a textual query that is sent to the search engine.

These and other services may be implemented in a server system 590. Aserver system may be a combination of hardware and software thatprovides a service or a set of services. For example, a set ofphysically separate and networked computerized devices may operatetogether as a logical server system unit to handle the operationsnecessary to offer a service to hundreds of computing devices. A serversystem is also referred to herein as a computing system.

In various implementations, operations that are performed “in responseto” or “as a consequence of” another operation (e.g., a determination oran identification) are not performed if the prior operation isunsuccessful (e.g., if the determination was not performed). Operationsthat are performed “automatically” are operations that are performedwithout user intervention (e.g., intervening user input). Features inthis document that are described with conditional language may describeimplementations that are optional. In some examples, “transmitting” froma first device to a second device includes the first device placing datainto a network for receipt by the second device, but may not include thesecond device receiving the data. Conversely, “receiving” from a firstdevice may include receiving the data from a network, but may notinclude the first device transmitting the data.

“Determining” by a computing system can include the computing systemrequesting that another device perform the determination and supply theresults to the computing system. Moreover, “displaying” or “presenting”by a computing system can include the computing system sending data forcausing another device to display or present the referenced information.

FIG. 6 is a block diagram of computing devices 600, 650 that may be usedto implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device600 is intended to represent various forms of digital computers, such aslaptops, desktops, workstations, personal digital assistants, servers,blade servers, mainframes, and other appropriate computers. Computingdevice 650 is intended to represent various forms of mobile devices,such as personal digital assistants, cellular telephones, smartphones,and other similar computing devices. The components shown here, theirconnections and relationships, and their functions, are meant to beexamples only, and are not meant to limit implementations describedand/or claimed in this document.

Computing device 600 includes a processor 602, memory 604, a storagedevice 606, a high-speed interface 608 connecting to memory 604 andhigh-speed expansion ports 610, and a low speed interface 612 connectingto low speed bus 614 and storage device 606. Each of the components 602,604, 606, 608, 610, and 612, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 602 can process instructions for executionwithin the computing device 600, including instructions stored in thememory 604 or on the storage device 606 to display graphical informationfor a GUI on an external input/output device, such as display 616coupled to high-speed interface 608. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices600 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 604 stores information within the computing device 600. Inone implementation, the memory 604 is a volatile memory unit or units.In another implementation, the memory 604 is a non-volatile memory unitor units. The memory 604 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 606 is capable of providing mass storage for thecomputing device 600. In one implementation, the storage device 606 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 604, the storage device 606,or memory on processor 602.

The high-speed controller 608 manages bandwidth-intensive operations forthe computing device 600, while the low speed controller 612 manageslower bandwidth-intensive operations. Such allocation of functions is anexample only. In one implementation, the high-speed controller 608 iscoupled to memory 604, display 616 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 610, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 612 is coupled to storage device 606 and low-speed expansionport 614. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 600 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 620, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 624. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 622. Alternatively, components from computing device 600 may becombined with other components in a mobile device (not shown), such asdevice 650. Each of such devices may contain one or more of computingdevice 600, 650, and an entire system may be made up of multiplecomputing devices 600, 650 communicating with each other.

Computing device 650 includes a processor 652, memory 664, aninput/output device such as a display 654, a communication interface666, and a transceiver 668, among other components. The device 650 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 650, 652,664, 654, 666, and 668, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 652 can execute instructions within the computing device650, including instructions stored in the memory 664. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. Additionally, the processor may beimplemented using any of a number of architectures. For example, theprocessor may be a CISC (Complex Instruction Set Computers) processor, aRISC (Reduced Instruction Set Computer) processor, or a MISC (MinimalInstruction Set Computer) processor. The processor may provide, forexample, for coordination of the other components of the device 650,such as control of user interfaces, applications run by device 650, andwireless communication by device 650.

Processor 652 may communicate with a user through control interface 658and display interface 656 coupled to a display 654. The display 654 maybe, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display)display or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 656 may compriseappropriate circuitry for driving the display 654 to present graphicaland other information to a user. The control interface 658 may receivecommands from a user and convert them for submission to the processor652. In addition, an external interface 662 may be provide incommunication with processor 652, so as to enable near areacommunication of device 650 with other devices. External interface 662may provided, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 664 stores information within the computing device 650. Thememory 664 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 674 may also be provided andconnected to device 650 through expansion interface 672, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 674 may provide extra storage space fordevice 650, or may also store applications or other information fordevice 650. Specifically, expansion memory 674 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 674may be provide as a security module for device 650, and may beprogrammed with instructions that permit secure use of device 650. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 664, expansionmemory 674, or memory on processor 652 that may be received, forexample, over transceiver 668 or external interface 662.

Device 650 may communicate wirelessly through communication interface666, which may include digital signal processing circuitry wherenecessary. Communication interface 666 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 668. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 670 mayprovide additional navigation- and location-related wireless data todevice 650, which may be used as appropriate by applications running ondevice 650.

Device 650 may also communicate audibly using audio codec 660, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 660 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 650. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 650.

The computing device 650 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 680. It may also be implemented as part of asmartphone 682, personal digital assistant, or other similar mobiledevice.

Additionally computing device 600 or 650 can include Universal SerialBus (USB) flash drives. The USB flash drives may store operating systemsand other applications. The USB flash drives can include input/outputcomponents, such as a wireless transmitter or USB connector that may beinserted into a USB port of another computing device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), peer-to-peernetworks (having ad-hoc or static members), grid computinginfrastructures, and the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

Although a few implementations have been described in detail above,other modifications are possible. Moreover, other mechanisms forperforming the systems and methods described in this document may beused. In addition, the logic flows depicted in the figures do notrequire the particular order shown, or sequential order, to achievedesirable results. Other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherimplementations are within the scope of the following claims.

1. (canceled)
 2. A computer-implemented method, comprising: capturing,by a computing device, a first image that includes a first subject in aphysical environment of the computing device using a camera of thecomputing device; determining, by the computing device, a brightness ofthe first subject in the first image, wherein during capture of thefirst image, the first subject is illuminated, at least in part, by alight source at a first location on the display; determining, by thecomputing device, an intensity for the light source based on thedetermined brightness of the first subject in the first image;detecting, by the computing device, a change event of the display thatresults, or would result, in the light source interfering withpresenting of a user interface on the display, wherein the change eventinvolves at least one of a change in the user interface or a change inthe light source; in response, at least in part, to the change event,automatically relocating, by the computing device, the light source to asecond location on the display; and capturing, by the computing device,a second image including the first subject illuminated by the lightsource relocated to the second location on the display.
 3. The computerimplemented method of claim 2, wherein the light source includes agraphical element and relocating the light source includes presentingthe graphical element at the second location on the display.
 4. Themethod of claim 2, wherein the change event includes at least one ofmoving or resizing the user interface or determining that the userinterface is to be moved or resized.
 5. The method of claim 2, whereinthe change event includes resizing of the light source or determiningthat the light source is to be resized.
 6. The method of claim 2,further comprising: receiving, by the computing device, a video streamof images from a second computing device, wherein the received videostream of images is presented on the user interface concurrent with thelight source.
 7. The method of claim 2, wherein interfering of the lightsource with the presenting of the user interface includes the lightsource obscuring a particular portion of the user interface and whereinthe second location is away from the particular portion of the userinterface.
 8. The method of claim 7, further comprising detecting asecond subject in the particular portion of the user interface, whereinthe automatically relocating of the light source to the second locationis further in response to detecting the second subject in the particularportion of the user interface.
 9. A non-transitory computer-readablemedium storing instructions that, when executed by one or moreprocessors, cause the one or more processors to perform operationscomprising: capturing, by a computing device, a first image thatincludes a first subject in a physical environment of the computingdevice using a camera of the computing device; determining, by thecomputing device, a brightness of the first subject in the first image,wherein during capture of the first image, the first subject isilluminated, at least in part, by a light source at a first location onthe display; determining, by the computing device, an intensity for thelight source based on the determined brightness of the first subject inthe first image; detecting, by the computing device, a change event ofthe display that results, or would result, in the light sourceinterfering with presenting of a user interface on the display, whereinthe change event involves at least one of a change in the user interfaceor a change in the light source; in response, at least in part, to thechange event, automatically relocating, by the computing device, thelight source to a second location on the display; and capturing, by thecomputing device, a second image including the first subject illuminatedby the light source relocated to the second location on the display. 10.The computer-readable medium of claim 9, wherein the light sourceincludes a graphical element and relocating the light source includespresenting the graphical element at the second location on the display.11. The computer-readable medium of claim 9, wherein the change eventincludes at least one of moving or resizing the user interface ordetermining that the user interface is to be moved or resized.
 12. Thecomputer-readable medium of claim 9, wherein the change event includesresizing of the light source or determining that the light source is tobe resized.
 13. The computer-readable medium of claim 9, wherein theoperations further comprise: receiving, by the computing device, a videostream of images from a second computing device, wherein the receivedvideo stream of images is presented on the user interface concurrentwith the light source.
 14. The computer-readable medium of claim 9,wherein interfering of the light source with the presenting of the userinterface includes the light source obscuring a particular portion ofthe user interface and wherein the second location is away from theparticular portion of the user interface.
 15. The computer-readablemedium of claim 14, wherein the operations further comprise detecting asecond subject in the particular portion of the user interface, whereinthe automatically relocating of the light source to the second locationis further in response to detecting the second subject in the particularportion of the user interface.
 16. A system comprising: one or moreprocessors; and one or more computer-readable media having instructionsstored thereon that, when executed by the one or more processors, causeperformance of operations comprising: capturing, by a computing device,a first image that includes a first subject in a physical environment ofthe computing device using a camera of the computing device;determining, by the computing device, a brightness of the first subjectin the first image, wherein during capture of the first image, the firstsubject is illuminated, at least in part, by a light source at a firstlocation on the display; determining, by the computing device, anintensity for the light source based on the determined brightness of thefirst subject in the first image; detecting, by the computing device, achange event of the display that results, or would result, in the lightsource interfering with presenting of a user interface on the display,wherein the change event involves at least one of a change in the userinterface or a change in the light source; in response, at least inpart, to the change event, automatically relocating, by the computingdevice, the light source to a second location on the display; andcapturing, by the computing device, a second image including the firstsubject illuminated by the light source relocated to the second locationon the display.
 17. The system of claim 16, wherein the light sourceincludes a graphical element and relocating the light source includespresenting the graphical element at the second location on the display.18. The system of claim 16, wherein the change event includes at leastone of moving or resizing the user interface or determining that theuser interface is to be moved or resized.
 19. The system of claim 16,wherein the change event includes resizing of the light source ordetermining that the light source is to be resized.
 20. The system ofclaim 16, wherein interfering of the light source with the presenting ofthe user interface includes the light source obscuring a particularportion of the user interface and wherein the second location is awayfrom the particular portion of the user interface.
 21. The system ofclaim 20, wherein the operations further comprise detecting a secondsubject in the particular portion of the user interface, wherein theautomatically relocating of the light source to the second location isfurther in response to detecting the second subject in the particularportion of the user interface.